查看原文
其他

数据可视化工具库-pyecharts

stormdony Python绿洲 2018-08-21

阅读文本需要7分钟

Echarts是百度出的很有名,也很叼。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。
pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。
ps:建议在jupyter-notebook环境下运行,安装教程可以查看文末链接

安装

直接使用pip安装

pip install pyecharts

图表类型

类型解释
Bar柱状图/条形图
Bar3D3D 柱状图
Boxplot箱形图
EffectScatter有涟漪特效动画的散点图
Funnel漏斗图
Gauge仪表盘
Geo地理坐标系
Graph关系图
HeatMap热力图
KlineK线图
Line折线/面积图
Line3D3D 折线图
Liquid水球图
Map地图
Parallel平行坐标系
Pie饼图
Polar极坐标系
Radar雷达图
Sankey桑基图
Scatter散点图
Scatter3D3D 散点图
ThemeRiver主题河流图
WordCloud词云图

常用方法

方法解释
add()添加图表数据和设置配置项
show_config()打印输出图表配置项
render()默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r”e:\my_first_chart.html”),文件用浏览器打开

通用配置

属性说明
xyAxis直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline)
dataZoomdataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
legend图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
label图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
lineStyle带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)
grid3D3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
axis3D3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
visualMap是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)
markLine&markPoint图形标记组件,用于标记指定的特殊数据,又标记线和标记点两种。(Bar、Line、Kline)
tooltip提示框组件,用于移动或点击鼠标时弹出数据内容

通用配置项均在 add() 中设置,这里介绍一些常用的属性配置,有兴趣可以翻一下文档:http://pyecharts.org/#/zh-cn/charts

  • xyAxis:

    • is_convert -> bool
      是否交换 x 轴与 y 轴

    • is_xaxis_inverse -> bool
      是否反向 x 坐标轴,默认为 False

    • is_xaxis_show -> bool
      是否显示 x 轴

    • xaxis_name -> str
      x 轴名称

  • dataZoom:

    • is_datazoom_show -> bool
      是否使用区域缩放组件,默认为 False

    • datazoom_type -> str
      区域缩放组件类型,默认为'slider',有'slider', 'inside', 'both'可选

  • legend:

    • is_legend_show -> bool
      是否显示顶端图例,默认为 True

  • label:

    • is_label_show -> bool
      是否正常显示标签,默认不显示。标签即各点的数据项信息

    • is_random -> bool
      是否随机排列颜色列表,默认为 False

  • lineStyle:

    • line_width -> int
      线的宽度,默认为 1

    • line_opacity -> float
      线的透明度,0 为完全透明,1 为完全不透明。默认为 1

    • line_curve -> float
      线的弯曲程度,0 为完全不弯曲,1 为最弯曲。默认为 0

    • line_type -> str
      线的类型,有'solid', 'dashed', 'dotted'可选。默认为'solid'

  • markLine&markPoint

    • mark_line_valuedim -> list
      标记线指定在哪个维度上指定最大值最小值。这可以是维度的直接名称,Line 时可以是 x、angle 等、Kline 图时可以是 open、close、highest、lowest。
      可同时制定多个维度,如:
      mark_line=['min', 'max'], mark_line_valuedim=['lowest', 'highest'] 则表示 min 使用 lowest 维度,max 使用 highest 维度,以此类推

  • toolbox

    • is_toolbox_show -> bool
      指定是否显示右侧实用工具箱,默认为 True。

    • is_more_utils -> bool
      指定是否提供更多的实用工具按钮。默认只提供『数据视图』和『下载』按钮

栗子

例1.xyAxis:

1from pyecharts import Bar
2bar = Bar("手机品牌数量""来自:Coder日常")
3bar.add("band", ["Apple""小米""三星","华为","锤子","vivo","OPPO","魅族"], [ 203618,10,15,19,60,50],is_convert=True,is_xaxis_show=True,xaxis_name='我是x轴')
4bar.show_config()
5bar.render()

xy轴转换之后难看了许多,但是为了效果,难看就难看点

(数据纯属虚构)

例2.dataZoom

1bar = Bar("手机品牌数量""来自:Coder日常")
2bar.add("band", ["Apple""小米""三星","华为","锤子","vivo","OPPO","魅族"], [ 203618,10,15,19,60,50],is_datazoom_show=True,datazoom_type='inside')
3bar

这里使用了dataZoom的inside类型,可以随着鼠标滚轮的滑动而改变,蛮好玩的。不会录制gif,这里放图没有意思,就不放了。

例3. label

1from pyecharts import Pie
2attr =  ["Apple""小米""三星","华为","锤子","vivo","OPPO","魅族"]
3v1 = [ 203618,10,15,19,60,50]
4pie = Pie("手机品牌占比", title_pos='center')
5pie.add("", attr, v1, radius=[4075], label_text_color=None,
6        is_label_show=True, legend_orient='vertical',
7        legend_pos='left',is_random=True)
8pie.use_theme("dark")#使用主题
9pie

使用了dark和颜色随机之后,有点炫酷(chou),有没有这种feel?

例4. lineStyle

1from pyecharts import Line
2line = Line("手机品牌数量""来自:Coder日常")
3line.add("band", ["Apple""小米""三星","华为","锤子","vivo","OPPO","魅族"], [ 203618,10,15,19,60,50],line_opacity=1,line_type='dotted')
4line.add("clothes", ["衬衫""西裤""袜子","羊毛衫","高跟鞋","雪纺衫","毛衣","针织衫"], [ 40,1836,12,19,35,68,55],line_width=2,line_curve=1,line_type='dashed')
5line

效果看下图:

例5. markLine&markPoint

1from pyecharts import Bar
2bar = Bar("手机品牌数量""来自:Coder日常")
3bar.add("band", ["Apple""小米""三星","华为","锤子","vivo","OPPO","魅族"], [ 203618,10,15,19,60,50],mark_line=['min''max'],is_toolbox_show = True,is_more_utils=True)
4bar

效果如图:

(快看我的右侧)

可以看到,这个图与上面的图多了标注线,还有右侧提供了更多的工具

炫酷图表

介绍几种不算常用,但是贼炫酷的图

1.仪表图

1from pyecharts import Gauge
2
3gauge = Gauge("仪表盘示例")
4gauge.add("业务指标""完成率"66.66)
5gauge

如图:

(查水表啦)

2.水球图

1from pyecharts import Liquid
2
3liquid = Liquid("水球图示例")
4liquid.add("Liquid", [0.6])
5liquid

如图:

3.词云图
pyecharts支持词云图,并且很好的支持中文,之前也提过。这里隆重介绍一下WordCould,作为压轴

WordCloud.add() 方法签名

1add(name, attr, value,
2    shape="circle",
3    word_gap=20,
4    word_size_range=None,
5    rotate_step=45)

说明:

  • name -> str
    图例名称

  • attr -> list
    属性名称

  • value -> list
    属性所对应的值

  • shape -> list
    词云图轮廓,有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选

  • word_gap -> int
    单词间隔,默认为 20。

  • word_size_range -> list
    单词字体大小范围,默认为 [12, 60]。

  • rotate_step -> int
    旋转单词角度,默认为 45

1from pyecharts import WordCloud
2
3name = [
4 'Echarts''图表制作''炫酷''牛逼''Python',
5 '编程''简单''方便''快捷''Home''Johnny Depp'
6]
7value = [965847582555550462366360282273265]
8wordcloud = WordCloud(width=1300, height=620)
9wordcloud.add("", name, value, word_size_range=[30100],shape='diamond')
10wordcloud

ps: 当且仅当 shape 为默认的'circle'时 rotate_step 参数才生效

(熊厂良心出品)

最后

pyecharts就分享到这里,整理的不是很好,见谅哈。。。
另外,今天想分享pyecharts的时候,翻了一遍官方文档,学到了很多之前没有注意到的知识,感觉看文档比看博客之类的好多了,建议都去翻一下文档O(∩_∩)O
这里再放上一次官方文档地址,免得又得翻回前面:http://pyecharts.org/#/zh-cn/charts

后话:排版真的不容易呀。。。请多多点赞支持,你们的鼓励,就是我坚持下去的动力


点赞,让我看到你的鼓励

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存